package com.jy.oms.framework.asyn.task.queue;

import com.jy.oms.framework.asyn.task.model.TaskQueryDto;
import com.jy.oms.framework.asyn.task.model.TaskResultDto;
import com.jy.oms.framework.asyn.task.model.TaskWrapper;

import java.util.List;

/**
 * 任务队列服务
 */
public interface ITaskQueueManager {

    /**
     * 添加任务
     *
     * @param taskWrapper
     */
    void add(TaskWrapper taskWrapper);

    /**
     * 批量添加任务
     *
     * @param taskWrapperList
     */
    void addBatch(List<TaskWrapper> taskWrapperList);

    /**
     * 消费队列
     *
     * @return
     */
    List<TaskWrapper> poll(TaskQueryDto taskQueryDto);

    /**
     * 任务执行完成
     */
    void finish(TaskResultDto taskResultDto);

    /**
     * 任务执行完成
     *
     * @param taskResultList
     */
    void finish(List<TaskResultDto> taskResultList);

    /**
     * 删除任务
     */
    void remove(TaskWrapper taskWrapper);
}
